package com.gccloud.design.service;


import com.gccloud.design.dto.DesignCenterDTO;
import com.gccloud.design.dto.SdFormDefineDto;
import com.gccloud.design.entity.SdFormDefineEntity;
import com.gccloud.design.vo.SdFormDefineVo;
import com.gccloud.starter.common.vo.R;

import java.util.List;
import java.util.Map;

/**
 * @author wu.yumin
 * @version 1.0.0
 * @Description 表单定义service
 * @date 2021/6/16 19:36
 */
public interface SdFormDefineService {

    /**
     * 创建表单
     *
     * @param entity 表单定义实体类
     * @return boolean
     */
    R insertFormDefine(SdFormDefineEntity entity);

    /**
     * 根据表单编码查询表单信息
     *
     * @param formCode 表单编码
     * @return 表单定义实体类
     */
    SdFormDefineEntity getFormByCd(String formCode);

    /**
     * 删除表单
     *
     * @param formId 表单标识
     * @return boolean
     */
    boolean delFormDefine(Long[] formId);

    /**
     * 表单发布
     *
     * @param formId 表单标识
     * @return boolean
     */
    boolean releaseForm(Long[] formId);

    /**
     * 更新表单
     *
     * @param entity 表单定义实体类
     * @return boolean
     */
    boolean updateFormDefine(SdFormDefineEntity entity);

    /**
     * 分页查询表单列表
     *
     * @param searchDTO 查询DTO
     * @return Map
     */
    Map<String, Object> queryFormList(SdFormDefineDto searchDTO);

    /**
     * 查询表单列表
     *
     * @param busiType  业务类型
     * @param formClass 表单分类
     * @param formType  表单类型
     * @return 表单定义实体类列表
     */
    List<SdFormDefineEntity> queryList(Long busiType, String formClass, String formType);

    /**
     * 新增多个表单
     * @return
     */
    R saveList( Map<String,Object> param);

    /**
     * 低代码平台下线表单
     * @param catalogCode
     * @return
     */
    Boolean downForm(String catalogCode);
}
